package com.leetcode.problems_09;

/**
 * 0026：删除有序数组中的重复项
 * 给你一个有序数组 nums ，请你 原地 删除重复出现的元素，使每个元素 只出现一次 ，返回删除后数组的新长度。
 *
 * 不要使用额外的数组空间，你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成
 *
 * 双指针--快慢指针
 *      指定slow=1、fast=1两个指针，从数组下标1开始遍历；
 *      比较 fast 与 fast-1 位置的元素是否相等：
 *          不相等--> 交换slow 与fast 处的元素位置；
 *          fast后移一位
 *
 *
 * @Author: WuPeng
 * @Date: 2021/5/18 7:30 下午
 */
public class RemoveRepeat {

    public static int solution(int[] arr){
        if (arr.length == 0){
            return 0;
        }
        int slow=1, fast=1;
        while (fast < arr.length){
            if (arr[fast] != arr[fast-1]){
                arr[slow] = arr[fast];
                ++slow;
            }
            ++fast;
        }
        return slow;
    }

    public static void main(String[] args) {
        int[] nums = {0,0,1,1,1,2,2,3,3,4};

        System.out.println(solution(nums));

    }

}
